package com.dc.commons.shiro.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.dc.commons.shiro.enums.PermissionType;
import com.dc.commons.shiro.enums.TaskType;

/*******************************************************************************<P>
 * 文件名: DcPermissions.java <br>
 * 版本: 1.0<br>
 * 描述:<br>
 * 版权所有: <br>
 * <P>
 * 创建者: 王建栋 <br>
 * 创建日期: 2016年6月6日 上午10:36:51<br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 ******************************************************************************/
@Target({ElementType.METHOD,ElementType.PACKAGE})
@Retention(RetentionPolicy.RUNTIME)
public @interface DcPermissions {

	/**
	 * 权限名称
	 * @return name
	 */
	String name();
	
	/**
	 * 权限代码
	 * @return taskCode
	 */
	String[] taskCode() default "";
	
	/**
	 * 权限类型
	 * @return permissionType
	 */
	PermissionType permissionType() default PermissionType.TASK;
	
	/**
	 *  权限类型
	 * @return taskType
	 */
	TaskType taskType() default TaskType.PERMISSION;
	
	/**
	 * 权限码之间的关系
	 * @return
	 */
	Logical logical() default Logical.OR;
	
	/**
	 * 是否为主要，当 在一个类中包含多个菜单的时候其他的权限是要往 主要上面绑定
	 * @return
	 */
	boolean main() default false;
	/**
	 * 是否重复 权限
	 * @return
	 */
	boolean repeat() default false;
	
	
	public static  enum Logical {
	    AND, OR
	}
}
